<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    window.onload=function()
    {
        //点击按钮以后添加超链接
        var btn01=document.getElementById("btn01");
        var u1=document.getElementById("u1");
        btn01.onclick=function()
        {
            //console.log("添加一个超链接");

            //创建一个li
            var li=document.createElement("li");
            
            li.innerHTML="<a href='javascript:;'>新建的超链接class='link'</a>";

            //将li添加到ul中
            u1.appendChild(li);
        };
        
        //为每一个超链接都绑定一个单击响应函数
        //为每一个超链接都绑定一个单击响应函数，这种操作比较麻烦
        //而且这些操作只能为已有的超链接设置事件，而新添加的超链接必须重新绑定

        /*
        //获取所有的a
        var allA=document.getElementsByTagName("a");
        //遍历
        for(var i=0;i<allA.length;i++)
        {
            console.log(allA[i]);
            allA[i].onclick=function()
            {
                console.log("我是a的单击响应函数");
            };
        }
        */
        
        //我们希望只绑定一次事件，即可应用到所有的元素上.即时元素时后面添加的
        //我们可以尝试将其绑定给元素的共同的祖先元素
        //事件的委派
        //指将事件统一绑定给元素的共同的祖先元素，这样当后台元素上的事件被触发时，会一直冒泡祖先元素
        //从而通过祖先元素的响应函数来处理事件
        //事件委培利用了冒泡，通过委派可以减少事件绑定的次数，提高程序的性能

        //给ul绑定一个单击响应函数
        //这样ul的子元素全都有单击响应函数
        u1.onclick=function(event)
        {
            //这样绑定存在一个缺点，UI存在的区域全是判定区域，随便点击都能触发事件
            //所以需要定一个标准，如果触发事件的对象睡我们期望的元素，则继续执行，否则不执行
            //console.log("我是a的单击响应函数");

            //先检查一下target属性
            //event中的targe表示的触发事件的对象
            //确定target是被点击的对象
            if(event.target.className == "link")
            {
                console.log("我是ul的单击响应函数");
            }
        };
    };
    </script>
</head>
<body>
    <button id="btn01">添加超链接</button>
    <br>
    <ul id="u1">
        <li>我是li文档</li>
        <li><a href="javascript:;" class="link">超链接一</a></li>
        <li><a href="javascript:;" class="link">超链接二</a></li>
        <li><a href="javascript:;" class="link">超链接三</a></li>
    </ul>
</body>
</html>